const fs = require('fs');
const PATH = require("path");

/**
 * 获取目录内的文件，可遍历子目录
 * @param {String} path        目录
 * @param {Boolean} traversing  是否遍历子目录
 * @returns {String[]}
 */
function getFileLists(path,traversing = false) {
  if(!traversing) {
    return getFiles(path);
  }
  let fileLists = [];
  let cd = function (p = "") {
    if(isDir(p)) {
      let list = getFiles(p);
      for(let i = 0;i < list.length;i++ ) {
        cd(PATH.join(p,list[i]));
      }
    }else if(isFile(p)){
      fileLists.push(p);
    }
  }
  cd(path);
  return fileLists;
}
// 获取当前目录下的文件列表（不遍历）
function getFiles(path) {
  return fs.readdirSync(path);
}
// 是否是目录
function isDir(path) {
  if(fs.existsSync(path)) {
    let stat = fs.statSync(path);
    return stat.isDirectory(path);
  }
  return false;
}
// 是否是文件
function isFile(path) {
  if(fs.existsSync(path)) {
    let stat = fs.statSync(path);
    return stat.isFile(path);
  }
  return false;
}
// 获取文件内容
function getFileContent(fileName) {
  if(isFile(fileName)) {
    return fs.readFileSync(fileName);
  }
  throw new Error(fileName + " error!")
}
// 创建目录
function createDir(dirName="") {
  if(!fs.existsSync(dirName)) {
    fs.mkdirSync(dirName);
  }
}

function joinPath(...pathArr) {
  return PATH.join(...pathArr);
}

module.exports = {
  getFileLists,
  getFiles,
  isDir,
  isFile,
  getFileContent,
  createDir,
  joinPath,
}